﻿package com.zouloux.core.data.remote 
{
	/**
	 * ...
	 * @author ZoulouX
	 */
	public class RemotingResponse
	{
		/**
		 * Vérifier si la requête au service à fonctionné
		 */
		public var success				:Boolean;
		
		/**
		 * Le message d'erreur s'il y en a eu un
		 */
		public var message				:String;
		
		/**
		 * Le nom du service appelé
		 */
		public var serviceName			:String;
		
		/**
		 * L'objet répondu (peut être de n'importe quel type
		 */
		public var response				:*;
		
		/**
		 * Le code d'erreur
		 */
		public var code					:uint;
		
		/**
		 * L'objet RemotingResponse, seul type d'objet renvoyé par la plateforme CPAMF
		 * @param	pSource
		 */
		public function RemotingResponse (pSource:Object = null)
		{
			// Vérifier qu'on est un objet source à caster
			if (pSource != null)
			{
				// Récupérer toutes les propriétés de cet objet
				for (var i:* in pSource)
				{
					// Essayer de les appliquer à cet objet
					try
					{
						this[i] = pSource[i];
					}
					catch (error:Error)
					{
						throw new Error("Unable to create the remotingResponse, AMF message my be not valid");
					}
				}
			}
		}
		
		/**
		 * Convertir en string
		 * @return : String
		 */
		public function toString ():String
		{
			return "RemotingResponse(" + serviceName + ") [success:" + success + ", code: " + code + "; message: " + message + "]";
		}
	}
}